Skip to content

Conversation

@amarques-godaddy
Copy link
Contributor

@amarques-godaddy amarques-godaddy commented Oct 8, 2025

Summary

This PR introduces biome-config-godaddy, a new Biome configuration package that provides a fast, Rust-based alternative to our existing ESLint and Prettier configurations. There are two config files provided in this package - a JS version biome.json based on eslint-config-godaddy, and a TS version biome-ts.json based on eslint-config-godaddy-typescript.

Motivation

As JavaScript tooling evolves, teams are seeking faster linting and formatting solutions that maintain the same code quality standards. Biome offers significant performance improvements over traditional ESLint + Prettier setups while providing equivalent functionality. This package enables GoDaddy teams to adopt modern tooling without sacrificing our established coding standards.

Key details

  • The majority of the rules were generated automatically with Biome's auto-migration cli tool, ensuring their closest translation between the eslint-config-godaddy rules and their Biome equivalents (also note that this is not a 1:1 mapping, many rules are less precise than in eslint).
  • This package requires a very recent version of Biome, which is currently in beta because of the new plugins feature, as well as many newer rules that align with our current eslint equivalents.
  • I added a json section to each configuration file to mimic the eslint-plugin-json rules.
  • I added the useSingleJsDocAsterisk rule to match Biome's equivalency list.
  • The eslint-plugin-mocha is already handled by Biome due to its domain feature, which automatically enables rules that belong to a domain with certain package specific dependencies. Read more about domains here.

Changeset

  • Changeset added (docs)

Test Plan

I tested this change by ensuring that all rules included could be properly overridden in a consuming project. I tested this by symlinking the configurations locally and using it to extend a configuration file in one of my local projects.

@amarques-godaddy amarques-godaddy requested a review from a team as a code owner October 8, 2025 20:12
"indentStyle": "space",
"indentWidth": 2,
"lineEnding": "lf",
"lineWidth": 130
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does Biome let you override this for those of us that like ye olde 80 columns?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it will let you override any rule that's not from a grit plugin currently.

@@ -0,0 +1,285 @@
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do these let you inherit? It'd be nice if our JS & TS weren't copy pasted.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately there is no way to do that currently, the extends field does not work for direct file paths. The docs specify that "paths in a shared configuration are interpreted from the location of the configuration that is extending it" and biome files must be .json or .jsonc currently unless they allow more file types in the future.

Copy link
Contributor

@jpage-godaddy jpage-godaddy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just have questions about the custom rules

@amarques-godaddy
Copy link
Contributor Author

Mostly just have questions about the custom rules

Your concerns are valid, but I just tested my work again and realized that the plugin path parsing doesn't work as I expected for shared configs. It was referencing an identical local grit configuration in the main path of the project I was testing in so I'll have to remove it and possibly replace it in a separate package, and if so I'll adjust what I have now with your recommendations in mind.

@kbader-godaddy kbader-godaddy merged commit 55f40a1 into godaddy:main Oct 16, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants